import minimist from "minimist";
import { resolve ,dirname} from 'path'
import { fileURLToPath } from 'url'
import { createRequire } from 'module'
import esbuild from "esbuild";



// node中的命令按参数可以通过process获取
const argv = process.argv.slice(2);

const __filename = fileURLToPath(import.meta.url); // 解析当前文件路径

const __dirname = dirname(__filename); // 解析当前文件路径
// 解析参数
const args = minimist(argv);


const target = args._[0] || "reactivity"; // 打包那个项目

const require = createRequire(import.meta.url) // 创建require

const formate = args.f || "iife"; // 打包格式

const pkg = require(`../packages/${target}/package.json`)

// 文件入口
const entry = resolve(__dirname,`../packages/${target}/src/index.ts`)

console.log(entry);
// 根据需要开始打包
esbuild.context({
    entryPoints: [entry], // 入口
    outfile: resolve(__dirname,`../packages/${target}/dist/${target}.js`) ,// 出口
    bundle: true, // 打包为单个文件
    platform: 'browser', // 打包环境（打包完的代码运行平台）
    sourcemap: true, // 可以调试源代码
    format: formate, // 打包格式 
    /** 
     * cjs： 打包成commonjs格式
     * esm： 打包成es模块
     * iife： 打包成自执行函数（打包位自执行函数时需要为该函数变量命名）
    */
   globalName: pkg.buildOptions?.name
}).then((ctx) => {
    console.log(`${target}打包完成`)
    return ctx.watch(); // 监听文件变化
})